/*
 * Copyright (c) 2010 Mathias Garbe <code@mathias-garbe.de>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef GAMES_HPP
#define GAMES_HPP

#include <string>

namespace Games
{
    enum GameType
    {
        TD = 0,
        RA,
        TS,
        RA2,
        RA2YR,
        NOGAME
    };
    
    static std::string getGameString(int gameType)
    {
        switch(gameType)
        {
            case 0:
                return "TD";
            case 1:
                return "RA";
            case 2:
                return "TS";
            case 3:
                return "RA2";
            case 4:
                return "RA2YR";
        };
        return "";
    }

    static std::string getGameNameString(int gameType)
    {
        switch(gameType)
        {
            case 0:
                return "Command & Conquer: Tiberian Dawn";
            case 1:
                return "Command & Conquer: Red Alert";
            case 2:
                return "Command & Conquer: Tiberian Sun";
            case 3:
                return "Command & Conquer: Red Alert 2";
            case 4:
                return "Command & Conquer: Red Alert 2 Yuris Revenge";
        };
        return "";
    }

    static std::string getGameShortNameString(int gameType)
    {
        switch(gameType)
        {
            case 0:
                return "Tiberian Dawn";
            case 1:
                return "Red Alert";
            case 2:
                return "Tiberian Sun";
            case 3:
                return "Red Alert 2";
            case 4:
                return "Red Alert 2 Yuris Revenge";
        };
        return "";
    }

    static std::string getGameNameAbbrString(int gameType)
    {
        switch(gameType)
        {
            case 0:
                return "C&C95";
            case 1:
                return "RA95";
            case 2:
                return "TS";
            case 3:
                return "RA2";
            case 4:
                return "RA2: YR";
        };
        return "";
    }

    static std::string getGameIniName(int gameType)
    {
        switch(gameType)
        {
            case 0:
                return "conquer.ini";
            case 1:
                return "REDALERT.INI";
            case 2:
                return "SUN.INI";
            case 3:
                return "ra2.ini";
            case 4:
                return "RA2MD.ini";
        };
        return "";
    }

    static std::string getGameExeName(int gameType)
    {
        switch(gameType)
        {
        case 0:
            return "C&C95.exe";
        case 1:
            return "RA95.EXE";
        case 2:
            return "GAME.exe";
        case 3:
            return "game.exe";
        case 4:
            return "gamemd.exe";
        };
        return "";
    }
}

#endif
